route: Add new procedures 'route_disp_session' and 'track_disp_session'.
authoroliskoli <oliskoli>
Sat, 6 Sep 2008 21:44:44 +0000 (21:44 +0000)
committeroliskoli <oliskoli>
Sat, 6 Sep 2008 21:44:44 +0000 (21:44 +0000)
route.c

diff --git a/route.c b/route.c
index 3baa1a734ab84162f926d01bdb898221bb04cfbc..255129ad7a1df93da32bbdfee47f925de8f3381f 100644 (file)
--- a/route.c
+++ b/route.c
@@ -20,6 +20,7 @@
 #include <stdio.h>
 #include "defs.h"
 #include "grtcirc.h"
+#include "session.h"
 
 static queue my_route_head;
 static queue my_track_head;
@@ -71,6 +72,7 @@ route_head_alloc(void)
         rte_head->line_color.bbggrr = -1;
         rte_head->line_color.opacity = 255;
         rte_head->line_width = -1;
+       rte_head->session = curr_session();
        return rte_head;
 }
 
@@ -263,18 +265,45 @@ common_disp_all(queue *qh, route_hdr rh, route_trl rt, waypt_cb wc)
        }
 }
 
+static void
+common_disp_session(const session_t *se, queue *qh, route_hdr rh, route_trl rt, waypt_cb wc)
+{
+       queue *elem, *tmp;
+       QUEUE_FOR_EACH(qh, elem, tmp) {
+               const route_head *rhp;
+               rhp = (route_head *) elem;
+               if (rhp->session == se) {
+                       if (rh) (*rh)(rhp);
+                       route_disp(rhp, wc);
+                       if (rt) (*rt)(rhp);
+               }
+       }
+}
+
 void 
 route_disp_all(route_hdr rh, route_trl rt, waypt_cb wc)
 {
        common_disp_all(&my_route_head, rh, rt, wc);
 }
 
+void 
+route_disp_session(const session_t *se, route_hdr rh, route_trl rt, waypt_cb wc)
+{
+       common_disp_session(se, &my_route_head, rh, rt, wc);
+}
+
 void 
 track_disp_all(route_hdr rh, route_trl rt, waypt_cb wc)
 {
        common_disp_all(&my_track_head, rh, rt, wc);
 }
 
+void 
+track_disp_session(const session_t *se, route_hdr rh, route_trl rt, waypt_cb wc)
+{
+       common_disp_session(se, &my_track_head, rh, rt, wc);
+}
+
 static void
 route_flush_q(queue *head)
 {